CREATE PROCEDURE dbo.sp_RepConsultaGenericaNotif

-- Parametros

@SeleccionFechas int ,	-- 1 = NO , 2 = SI
@FechaDesde varchar(30) ,
@FechaHasta varchar(30) ,
@Expediente varchar(20) ,
@Procurador int , 
@ZonaJuzgado int ,
@SubZonaJuzgado int ,
@ConsecutivoJuzgado int ,
@Area int , 
@Materia int , 
@Tipo int , 
@Asunto int , 
@Participacion_Estado int , 
@Promovente varchar(100) ,
@Parte varchar(200) ,
@Perjudicado varchar(100) ,
@InstitucionInvolucrada int , 
@EstadoProcesal int , 
@Inestimable int , 
@Pretension int ,
@Cuantia int ,
@Costas int , 
@TipoMoneda int ,
@Via_Administrativa int ,
@Comentarios varchar(200) ,
@SeleccionVigencia int ,	-- 0 = Cerrados , 1 = Activos , 2 = Todos
@Ordenamiento int ,		-- 1 = Expediente , 2 = Fechas , 3 = Partes , 4 = Procurador
@SeleccionTipoDocumento int	-- -1 = Todos , 1 = Litigio , 2 = Actividad No-Contenciosa , 3 = No Corresponde a PGR

AS

DECLARE
@FechaInicial datetime ,
@FechaFinal datetime  
SET @FechaInicial = CONVERT( DATETIME , LEFT( @FechaDesde , 10 ) + ' 00:00:00' , 121 ) 
SET @FechaFinal   = CONVERT( DATETIME , LEFT( @FechaHasta , 10 ) + ' 23:59:00' , 121 ) 

SELECT 	DISTINCT
	f.Fecha_Pgr , 
	x.area , 
	a.nombre AS Nombre_Area , 
	f.Num_Copia AS Copia , 
	consecutivo , 
	f.expediente , 
	f.Resolucion , 
	x.procurador , 
	v.nombre_procurador , 
	Parte = CASE
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN ''
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) > 0 THEN E.Parte
		WHEN LEN( COALESCE( e.Promovente , '' ) ) > 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN E.Promovente
		ELSE e.Promovente + ' CONTRA ' + e.Parte
		END , 
	CASE Con_Copias_Chk 
		WHEN '0' THEN 'NO' 
		ELSE 'SI' 
		END AS Copias
INTO	#Datos_Fuente 
FROM 	Expediente e 
	INNER JOIN Procuradores_X_Expediente x 
		ON e.expediente=x.expediente AND x.primario_chk='1' 
	INNER JOIN View_Nombre_Procuradores v
		ON x.procurador = v.procurador 
	LEFT OUTER JOIN Instituciones_X_Expediente k 
		ON e.expediente = k.expediente
	LEFT OUTER JOIN InstitucionInvolucrada I 
		ON k.InstitucionInvolucrada = i.InstitucionInvolucrada 
	INNER JOIN Juzgados j 
		ON  e.juzgado = j.juzgado 
	INNER JOIN Area a 
		ON x.area = a.area 
	INNER JOIN MateriaTipoAsunto m 
		ON x.materiatipoasunto = m.materiatipoasunto 
	INNER JOIN EstadoProcesal t 
		ON x.estadoprocesal = t.estadoprocesal 
	INNER JOIN Exp_Fecha f 
		ON e.expediente = f.expediente 
WHERE 	/*e.Activo_Cerrado = CASE @SeleccionVigencia		-- 0 = Cerrados 1 = Activos , 2 = Todos
				WHEN -1 THEN e.Activo_Cerrado
				ELSE @SeleccionVigencia
				END

	AND */
		f.Fecha_PGR BETWEEN CASE @SeleccionFechas
					WHEN 1 THEN f.Fecha_PGR
					ELSE @FechaInicial
					END
				AND CASE @SeleccionFechas
					WHEN 1 THEN f.Fecha_PGR
					ELSE @FechaFinal
					END

	-- el Expediente es buscado tanto en la columna Expediente como en la columna Equivale_A por acumulacion de expedientes
	AND (
		e.expediente LIKE CASE LEN( @Expediente ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.expediente
					ELSE '%' + @Expediente + '%'
					END
		OR
		e.Equivale_A LIKE CASE LEN( @Expediente ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.Equivale_A 
					ELSE '%' + @Expediente + '%'
					END
	     )

	AND x.Procurador = CASE @Procurador
				WHEN -1 THEN x.Procurador 
				ELSE @Procurador
				END

	AND e.juzgado - (e.juzgado % 10000) = 
			CASE @ZonaJuzgado
				WHEN -1 THEN e.juzgado - (e.juzgado % 10000) 
				ELSE @ZonaJuzgado * 10000
				END

	AND (e.juzgado % 10000)/100 = 
			CASE @SubZonaJuzgado
				WHEN -1 THEN (e.juzgado % 10000)/100 
				ELSE @SubZonaJuzgado 
				END

	AND (e.juzgado % 10000) % 100 =	
			CASE @ConsecutivoJuzgado
				WHEN -1 THEN (e.juzgado % 10000) % 100 
				ELSE @ConsecutivoJuzgado
				END

	AND x.Participacion_Estado =	CASE @Participacion_Estado
						WHEN -1 THEN x.Participacion_Estado 
						ELSE @Participacion_Estado

						END

	AND e.Promovente LIKE CASE LEN( @Promovente ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.Promovente 
					ELSE '%' + @Promovente + '%'
					END

	AND e.parte LIKE CASE LEN( @Parte ) -- blancos no son tomados como valor significativo
				WHEN 0 THEN e.parte
				ELSE '%' + @Parte + '%'
				END

	AND e.perjudicado LIKE CASE LEN( @Perjudicado ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.perjudicado
					ELSE '%' + @Perjudicado + '%'
					END

	AND x.area = CASE @Area
			WHEN -1 THEN x.area 
			ELSE @Area
			END

	AND x.materiatipoasunto - (x.materiatipoasunto % 10000) = 
			CASE @Materia
				WHEN -1 THEN x.materiatipoasunto - (x.materiatipoasunto % 10000) 
				ELSE @Materia * 10000
				END

	AND (x.materiatipoasunto % 10000)/100 = 
			CASE @Tipo
				WHEN -1 THEN (x.materiatipoasunto % 10000)/100 
				ELSE @Tipo
				END

	AND (x.MateriaTipoAsunto % 10000) % 100 = 
			CASE @Asunto
				WHEN -1 THEN (x.MateriaTipoAsunto % 10000) % 100 
				ELSE @Asunto
				END

	AND k.institucioninvolucrada = CASE @InstitucionInvolucrada
						WHEN -1 THEN k.institucioninvolucrada 
						ELSE @InstitucionInvolucrada
						END

	AND x.estadoprocesal = CASE @EstadoProcesal
					WHEN -1 THEN x.estadoprocesal 
					ELSE @EstadoProcesal
					END

	AND x.Inestimable = CASE @Inestimable
				WHEN 1 THEN @Inestimable 
				ELSE x.Inestimable 
				END

	AND (	( x.Pretension IS NOT NULL AND x.Pretension >= @Pretension )
		OR 
		( x.Pretension IS  NULL AND @Pretension = 0 )
		)

	AND x.cuantia >= CASE @Cuantia
				WHEN 1 THEN @Cuantia 
				ELSE x.cuantia
				END

	AND (	( x.Costas IS NOT NULL AND x.Costas >= @Costas )
		OR 
		( x.Costas IS  NULL AND @Costas = 0 )
		)

	AND x.Tipo_Moneda = CASE @TipoMoneda
				WHEN -1 THEN x.Tipo_Moneda 
				ELSE @TipoMoneda
				END

	AND e.Agotamiento_ViaAdministrativa = CASE @Via_Administrativa
				WHEN -1 THEN e.Agotamiento_ViaAdministrativa 
				ELSE @Via_Administrativa
				END

	AND x.comentarios LIKE CASE LEN( @Comentarios ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN x.comentarios
					ELSE '%' + @Comentarios + '%'
					END

IF @Ordenamiento = 1 -- Expediente
	SELECT	*
	FROM	#Datos_Fuente
	ORDER BY Expediente , 
		Fecha_Pgr DESC, 
		Consecutivo DESC ,
		Copia 

IF @Ordenamiento = 2 -- Fechas
	SELECT	*
	FROM	#Datos_Fuente
	ORDER BY Fecha_Pgr DESC, 
		Area , 
		nombre_procurador , 
		Consecutivo DESC ,
		Copia 

IF @Ordenamiento = 3 -- Partes
	SELECT	*
	FROM	#Datos_Fuente
	ORDER BY Parte 

IF @Ordenamiento = 4 -- Procurador
	SELECT	*
	FROM	#Datos_Fuente
	ORDER BY Nombre_Procurador , 
		Fecha_Pgr DESC, 
		Area , 
		Consecutivo DESC ,
		Copia 

DROP TABLE #Datos_Fuente
